1
บทเรียนที่ 7: การเรียนรู้แบบถ่ายทอด – การใช้ความรู้อย่างมีประสิทธิภาพ
EvoClass-AI002บรรยายที่ 7
00:00

ยินดีต้อนรับสู่บทเรียนที่ 7 ซึ่งเราจะแนะนำ การเรียนรู้แบบถ่ายทอด. เทคนิคนี้เกี่ยวข้องกับการนำโมเดลการเรียนรู้เชิงลึกที่ได้รับการฝึกอบรมแล้วจากชุดข้อมูลขนาดใหญ่และทั่วไป (เช่น ImageNet) มาใช้ใหม่ และปรับให้เหมาะสมกับงานเฉพาะเจาะจงที่แตกต่างกัน (เช่น โครงการอาหารของเรานั่นเอง) มันเป็นสิ่งจำเป็นสำหรับการบรรลุผลลัพธ์ระดับสูงสุดอย่างมีประสิทธิภาพ โดยเฉพาะเมื่อชุดข้อมูลที่มีป้ายกำกับมีจำกัด

1. ศักยภาพของการใช้น้ำหนักที่ฝึกเสร็จแล้ว

เครือข่ายประสาทเทียมลึกเรียนรู้คุณสมบัติตามลำดับชั้น ชั้นต่ำเรียนรู้แนวคิดพื้นฐาน (เส้นขอบ แฉก ลวดลาย) ในขณะที่ชั้นที่ลึกกว่ารวมสิ่งเหล่านี้เข้าด้วยกันเป็นแนวคิดที่ซับซ้อน (ดวงตา ล้อ วัตถุเฉพาะ) ประเด็นสำคัญคือ คุณสมบัติพื้นฐานที่เรียนรู้ในช่วงแรกนั้น สามารถนำไปใช้ได้ทั่วไป ครอบคลุมโดเมนภาพส่วนใหญ่

องค์ประกอบของการเรียนรู้แบบถ่ายทอด

  • งานต้นทาง: การฝึกอบรมบนภาพจำนวน 14 ล้านภาพ และ 1,000 หมวดหมู่ (เช่น ImageNet)
  • งานปลายทาง: การปรับน้ำหนักเพื่อจัดประเภทชุดข้อมูลที่เล็กลงมาก (เช่น ชั้นอาหารเฉพาะของเรา)
  • ส่วนที่ใช้ประโยชน์: พารามิเตอร์ส่วนใหญ่ของเครือข่าย — ชั้นการดึงคุณสมบัติ — ถูกนำมาใช้ใหม่โดยตรง
ข้อได้เปรียบด้านประสิทธิภาพ
การเรียนรู้แบบถ่ายทอดลดอุปสรรคด้านทรัพยากรหลักสองประการอย่างมาก: ต้นทุนด้านการคำนวณ (คุณหลีกเลี่ยงการฝึกโมเดลทั้งหมดเป็นเวลาหลายวัน) และ ข้อกำหนดด้านข้อมูล (สามารถบรรลุความแม่นยำสูงได้ด้วยตัวอย่างการฝึกเพียงไม่กี่ร้อยตัว แทนที่จะเป็นหลายพันตัว)
train.py
เทอร์มินัลbash — pytorch-env
> เตรียมพร้อมแล้ว คลิก "รัน" เพื่อดำเนินการ
>
ตัวตรวจสอบเทนเซอร์สด

รันโค้ดเพื่อตรวจสอบเทนเซอร์ที่ใช้งานอยู่
คำถามที่ 1
ข้อได้เปรียบหลักของการใช้โมเดลที่ฝึกมาแล้วจาก ImageNet สำหรับงานด้านการมองเห็นใหม่คืออะไร?
ต้องการข้อมูลที่มีป้ายกำกับน้อยกว่าการฝึกจากศูนย์
มันกำจัดความจำเป็นในการใช้ข้อมูลการฝึกใดๆ ทั้งหมด
มันรับรองความแม่นยำ 100% ทันที
คำถามที่ 2
ในกระบวนการเรียนรู้แบบถ่ายทอด ชิ้นส่วนใดของเครือข่ายประสาทเทียมมักถูกทำให้หยุดเคลื่อนไหว?
ชั้นเอาต์พุตสุดท้าย (หัว Classifier)
ฐานการประมวลผลแบบคอนโวลูชัน (ชั้นดึงคุณสมบัติ)
เครือข่ายทั้งหมดมักไม่ถูกระงับ
คำถามที่ 3
เมื่อเปลี่ยนหัว Classifier ใน PyTorch คุณต้องระบุพารามิเตอร์ใดเป็นอันดับแรกจากฐานที่ถูกระงับ?
ขนาดแบตช์ของข้อมูลปลายทาง
ขนาดฟีเจอร์ขาเข้า (มิติเอาต์พุตของชั้นคอนโวลูชันสุดท้าย)
จำนวนพารามิเตอร์ทั้งหมดของโมเดล
ภารกิจ: การปรับหัว Classifier
การออกแบบ classifier ใหม่สำหรับ FoodVision
คุณโหลดโมเดล ResNet ที่ฝึกมาแล้วจาก ImageNet ชั้นฟีเจอร์สุดท้ายให้เอาต์พุตเป็นเวกเตอร์ขนาด 512 โปรเจกต์ 'FoodVision' ของคุณมีชั้นอาหารที่แยกจากกัน 7 ชนิด
ขั้นตอนที่ 1
ขนาดฟีเจอร์ขาเข้าที่ต้องการสำหรับชั้นเชิงเส้นที่สามารถฝึกได้ใหม่คืออะไร?
คำตอบ:
ขนาดฟีเจอร์ขาเข้าต้องตรงกับเอาต์พุตของชั้นฐานที่ถูกระงับ
ขนาด: 512.
ขั้นตอนที่ 2
รหัสสแนปช็อตใน PyTorch ที่ใช้สร้างชั้นจัดประเภทใหม่นี้คืออะไร (สมมติว่าเอาต์พุตมีชื่อว่า `new_layer`)?
คำตอบ:
ขนาดเอาต์พุต 512 เป็นขาเข้า และจำนวนชั้น 7 เป็นขาออก
รหัส: new_layer = torch.nn.Linear(512, 7)
ขั้นตอนที่ 3
ขนาดฟีเจอร์ขาออกที่ต้องการสำหรับชั้นเชิงเส้นใหม่คืออะไร?
คำตอบ:
ขนาดฟีเจอร์ขาออกต้องตรงกับจำนวนชั้นปลายทาง
ขนาด: 7.